***************** Replication of Franchino, Fabio, and Camilla Mariotto. “Bargaining Outcomes and Success in EU Economic Governance Reforms”. Political Science Research and Methods.

* Step 1 to reproduce Figure A4

version 16

******************************* SENSITIVITY ANALYSIS
*************   COMPUTING POINT PREDICTIONS: NBS - RP Nash bargaining solution w/o reference point (10% selected)
clear all
gen mad=.
save mad_NBSnorp.dta, replace

set seed 1234

local v = 0
while `v' <= 1000 {
* Upload original dataset
use NBSmodel_data.dta, clear
gen nbs = 0
gen utility_star = .
gen utility = .
order utility utility_star nbs

* Modify 20% of actors's positions
/* We test for unsystematic mis-categorization following the re-categorization test proposed by Eric Neumayer and Thomas Plümper.
We have drawn a random sample of twenty percent of the positions. We have then increased by 25 points the position for half of these cases (if it is not located on upper bound) and decreased by 25 points the other half (if it is not located on the lower bound).
We have then estimated the model outcomes. The procedure is repeated for 1,000 samples
*/
***** Select a random sample without replacement of observations
***** change 4 out of 35 obs
generate random = runiform()
sort random
do meaningful_shift_comm.do
drop random

generate random = runiform()
sort random
do meaningful_shift_ep_1.do
drop random

do meaningful_shift_country.do

* Gradient ascent procedure
local i = 0
while `i' <= 100 {
replace utility =	-	salience1	*(`i'-	country1	)^2 if	salience1	> 0 &	salience1	!= .
replace utility = utility + (	-	salience2	*(`i'-	country2	)^2) if	salience2	> 0 &	salience2	!= .
replace utility = utility + (	-	salience3	*(`i'-	country3	)^2) if	salience3	> 0 &	salience3	!= .
replace utility = utility + (	-	salience4	*(`i'-	country4	)^2) if	salience4	> 0 &	salience4	!= .
replace utility = utility + (	-	salience5	*(`i'-	country5	)^2) if	salience5	> 0 &	salience5	!= .
replace utility = utility + (	-	salience6	*(`i'-	country6	)^2) if	salience6	> 0 &	salience6	!= .
replace utility = utility + (	-	salience7	*(`i'-	country7	)^2) if	salience7	> 0 &	salience7	!= .
replace utility = utility + (	-	salience8	*(`i'-	country8	)^2) if	salience8	> 0 &	salience8	!= .
replace utility = utility + (	-	salience9	*(`i'-	country9	)^2) if	salience9	> 0 &	salience9	!= .
replace utility = utility + (	-	salience10	*(`i'-	country10	)^2) if	salience10	> 0 &	salience10	!= .
replace utility = utility + (	-	salience11	*(`i'-	country11	)^2) if	salience11	> 0 &	salience11	!= .
replace utility = utility + (	-	salience12	*(`i'-	country12	)^2) if	salience12	> 0 &	salience12	!= .
replace utility = utility + (	-	salience13	*(`i'-	country13	)^2) if	salience13	> 0 &	salience13	!= .
replace utility = utility + (	-	salience14	*(`i'-	country14	)^2) if	salience14	> 0 &	salience14	!= .
replace utility = utility + (	-	salience15	*(`i'-	country15	)^2) if	salience15	> 0 &	salience15	!= .
replace utility = utility + (	-	salience16	*(`i'-	country16	)^2) if	salience16	> 0 &	salience16	!= .
replace utility = utility + (	-	salience17	*(`i'-	country17	)^2) if	salience17	> 0 &	salience17	!= .
replace utility = utility + (	-	salience18	*(`i'-	country18	)^2) if	salience18	> 0 &	salience18	!= .
replace utility = utility + (	-	salience19	*(`i'-	country19	)^2) if	salience19	> 0 &	salience19	!= .
replace utility = utility + (	-	salience20	*(`i'-	country20	)^2) if	salience20	> 0 &	salience20	!= .
replace utility = utility + (	-	salience21	*(`i'-	country21	)^2) if	salience21	> 0 &	salience21	!= .
replace utility = utility + (	-	salience22	*(`i'-	country22	)^2) if	salience22	> 0 &	salience22	!= .
replace utility = utility + (	-	salience23	*(`i'-	country23	)^2) if	salience23	> 0 &	salience23	!= .
replace utility = utility + (	-	salience24	*(`i'-	country24	)^2) if	salience24	> 0 &	salience24	!= .
replace utility = utility + (	-	salience25	*(`i'-	country25	)^2) if	salience25	> 0 &	salience25	!= .
replace utility = utility + (	-	salience26	*(`i'-	country26	)^2) if	salience26	> 0 &	salience26	!= .
replace utility = utility + (	-	salience27	*(`i'-	country27	)^2) if	salience27	> 0 &	salience27	!= .

* comm and ep positions (exclude if we want only country positions)
replace utility = utility + (	-	salience_comm	*(`i'-	comm	)^2)
replace utility = utility + (	-	salience_ep	*(`i'-	ep_1	)^2) if	ep_rule==2

replace utility_star = utility if `i'==0
replace nbs = `i' if utility > utility_star
replace utility_star = utility if utility > utility_star

local i = `i' + 1
}

order utility utility_star nbs sq outcome
sort act issue_id
label variable nbs "nash bargaining solution, w/o reference point"
label variable utility_star "maximized product of actors' utilities" 

* Compute means of absolute differences between outcomes and model predictions
gen mad=abs(nbs-outcome)
collapse mad
label variable mad "mean of absolute differences" 
append using mad_NBSnorp.dta
save mad_NBSnorp.dta, replace
sleep 100
local v = `v' + 1
}

use mad_NBSnorp.dta, clear
mean mad 
kdensity mad, nor normopts(lwidth(vvthin)) legend(off) graphregion(fcolor(white)) ytitle("") xtitle("") text(0.4 20 "mean 21.8" "s.e. 0.02", size(small) place(e)) title("NBS ¬ RP", size(small)) note("") ylabel(,labsize(small)) xlabel(,labsize(small)) saving(NBSnorp, replace)




